import store from '@/store'
/**
 * tabBar页面路径列表 (用于链接跳转时判断)
 * tabBarLinks为常量, 无需修改
 */
export const getTabBarLinks = () => {
  const tabBarLinks = [
    'pages/index/index',
    'pages/categorize/categorize',
    'pages/cart/cart',
    'pages/my/my'
  ]
  return tabBarLinks
}
/**
 * 显示成功提示框
 */
const showSuccess = (msg, callback) => {
  uni.showToast({
    title: msg,
    icon: 'success',
    mask: true,
    duration: 1500,
    success() {
      callback && callback()
    }
  })
}

/**
 * 显示失败提示框
 */
const showError = (msg, callback) => {
  uni.showModal({
    title: '友情提示',
    content: msg,
    showCancel: false,
    success(res) {
      callback && callback()
    }
  })
}
/**
 * 验证是否已登录
 */
const checkLogin = () => {
  return !!store.getters.userId
}
/**
 * 显示纯文字提示框
 */
const showToast = (msg, duration = 1500, mask = true) => {
  uni.showToast({
    title: msg, // 提示的内容
    icon: 'none',
    mask, // 是否显示透明蒙层，防止触摸穿透
    duration // 提示的延迟时间，单位毫秒，默认：1500  
  })
}


/**
 * 跳转到指定页面url
 * 支持tabBar页面
 * @param {string}  url   页面路径
 * @param {object}  query 页面参数
 * @param {string}  modo  跳转类型(默认navigateTo)
 */
export const navTo = (url, query = {}, modo = 'navigateTo') => {
  if (!url || url.length == 0) {
    return false
  }
  // tabBar页面, 使用switchTab
  if (uni.$unt.inArray(url, getTabBarLinks())) {
    uni.switchTab({
      url: `/${url}`
    })
    return true
  }
  // 生成query参数
  const queryStr = !uni.$unt.isEmptyObject(query) ? '?' + uni.$unt.urlEncode(query) : ''
  // 普通页面, 使用navigateTo
  modo === 'navigateTo' && uni.navigateTo({
    url: `/${url}${queryStr}`
  })
  // 特殊指定, 使用redirectTo
  modo === 'redirectTo' && uni.redirectTo({
    url: `/${url}${queryStr}`
  })
  return true
}
/**
 * 生成转发的url参数(string格式)
 */
const getShareUrlParams = (params) => {
  return uni.$unt.urlEncode({
    ...params
  })
}
/**
 * 发起支付请求
 * @param {Object} 参数
 */
const wxPayment = (option) => {
  const options = {
    timeStamp: '',
    nonceStr: '',
    prepay_id: '',
    paySign: '',
    ...option
  }
  return new Promise((resolve, reject) => {
    uni.requestPayment({
      provider: 'wxpay',
      timeStamp: options.timeStamp,
      nonceStr: options.nonceStr,
      'package': options.packageVal,
      signType: options.signType,
      paySign: options.paySign,
      success: res => resolve(res),
      fail: res => reject(res)
    })
  })
}
const success=showSuccess;
const error=showError;
const toast=showToast;
export default {
	// 挂载全局函数
	success,
	error,
	toast,
	navTo,
	getShareUrlParams,
	checkLogin,
	wxPayment
}
